package org.example.big_data.exception;

import org.example.big_data.pojo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice  //这个注解用于定义全局异常处理类，它可以捕获应用程序中抛出的异常，并返回自定义的响应
// · @ControllerAdvice 和 @ResponseBody 的组合注解
public class GlobalException {
    @ExceptionHandler(Exception.class)  //拦截什么类型的异常，这里拦截所有类型的异常
    public Result handleException(Exception e) {
        e.printStackTrace();  //控制台打印异常信息
//      return Result.error(e.getMessage());  //调用Result类中的静态方法error()，将异常信息返回到Result类中的msg属性

        //高级：判断是否包含异常信息，若没有异常信息，自定义返回一个“操作异常，请联系管理员”
        //注意一下是StringUtilsl 类而不是StringUtil类
        return Result.error(StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "操作异常，请联系管理员");
    }  //全局异常类接收到service层抛出的运行时异常
}
